package com.sunday.common.statemachine.study.e8_History;

import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.statemachine.StateMachine;
import org.springframework.beans.factory.annotation.Autowired;

@Configuration
public class StateMachineRunner {

    @Autowired
    private StateMachine<States3, Events> stateMachine;

    /**
     * TODO 这个样例根本没测通过
     * 根据查询在持久化的情况下作用好像不大
     */
    @Bean
    public CommandLineRunner run() {
        return args -> {
            stateMachine.start();  // 启动状态机

            // 状态变化
            stateMachine.sendEvent(Events.TO_S2);  // 触发 TO_S2 事件
            stateMachine.sendEvent(Events.TO_S21); // 触发 TO_S21 事件
            stateMachine.sendEvent(Events.TO_S22); // 触发 TO_S22 事件
            stateMachine.sendEvent(Events.TO_SH);  // 触发 TO_SH 事件，测试历史状态

            // 打印最终状态
            System.out.println("Final state: " + stateMachine.getState().getId());
        };
    }
}